package com.itheima.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.Utils.JwtUtils;
import com.itheima.mapper.EmpMapper;
import com.itheima.mapper.EmpSalarys;
import com.itheima.pojo.*;
import com.itheima.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class EmpServicelmpl implements EmpService {

    @Autowired
    EmpMapper empMapper;
    @Autowired
    EmpSalarys empSalarys;

    @Override
    public PageBean pagesle(EmpQueryParam param) {
        //启用分页
        PageHelper.startPage(param.getPage(),param.getPageSize());
        Page<Emp> emps = empMapper.pageselt(param);
        return new PageBean(emps.getTotal(),emps.getResult());
    }
    @Transactional
    @Override
    public void empdelete(List<Integer> ids) {

        empSalarys.deleteByIds(ids);
        empMapper.deleteemp(ids);

    }

    @Override
    public loginInfo loginInfo(Emp emp) {
        Emp loginEmp = empMapper.getlogInfoEmp(emp);
        if (loginEmp != null){
            Map<String,Object> claims = new HashMap<>();
            claims.put("id",loginEmp.getId());
            claims.put("username",loginEmp.getUsername());
            String token = JwtUtils.createJWT(claims);
            return new loginInfo(loginEmp.getId(),loginEmp.getUsername(),loginEmp.getName(),token);
        }
        return null;
    }
    /*
    新增员工
     */
    @Override
    public void insterts(Emp emp) {
        emp.setEntryTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        //新增员工
        empMapper.getnewemp(emp);
        //新增员工薪资表
        //1.先获取员工id
        Integer id = emp.getId();
        Empsalarys empsalarys = emp.getEmpsalarys();
        if (empsalarys!=null){
            //给薪资表添加员工id
            empsalarys.setEmpId(id);//把集合添加到经历表里
            empsalarys.setOverSalary(empsalarys.getSalary()+empsalarys.getOvertime()*40+empsalarys.getAttendance()*(-30)+empsalarys.getLeaveday()*(-100));
            empSalarys.getnewemp(empsalarys);
        }

        }

    /*
    修改员工
     */
    @Override
    public void save(Emp emp) {
        emp.setUpdateTime(LocalDateTime.now());
        //员工表
        empMapper.save(emp);
        //薪资表
        if(emp.getEmpsalarys()!=null){
            emp.getEmpsalarys().setEmpId(emp.getId());
            Empsalarys empsalarys = emp.getEmpsalarys();
            empsalarys.setOverSalary(empsalarys.getSalary()+empsalarys.getOvertime()*40+empsalarys.getAttendance()*(-30)+empsalarys.getLeaveday()*(-100));
            empSalarys.save(empsalarys);
        }
    }
/*
    根据id查询
 */
    @Override
    public Emp getinfoid(Integer id) {
        Emp emp = empMapper.getinfoid(id);
        return emp;
    }
/*
   查询全部员工
 */
    @Override
    public List<Emp> getAll() {
        List<Emp> list = empMapper.getall();
        return list;
    }
}
